Service outage in today's technological world can result in catastrophic damages or financial and reputation loss. Service Availability (SA) is defined as the percentage of time the service is provided even in the presence of inevitable failures in the system. SA is typically achieved by using redundant resources (e.g., components) in the system and managing these redundant resources through repair and recovery mechanisms.
The Service Availability Forum (SA Forum), a consortium of communications and computing companies has developed a set of standard application programming interfaces (APIs) to enable the development of commercial-off-the-shelf (COTS) components based highly available systems. Among the set of middleware services standardized by the SA Forum, the Availability Management Framework (AMF) has the role of ensuring the availability of services of a component-based clustered system. The AMF achieves this task by managing the redundant resources and re-assigning the workload of a faulty component to healthy ones. For this, AMF uses a configuration (i.e., AMF configuration) that describes the logical organization of the application components and their services. The design of an AMF configuration is a complex and error prone task.
For a given set of configuration requirements, different configurations can be generated in the configuration generation process based on the different choices made at each decision point. However, some of these configurations may not meet the availability requirement. Some of the earlier AMF configuration generation methods either generate a single configuration, or generate multiple configurations to satisfy the same requirements as the possible options are explored in a combinatorial manner. In the former case the single configuration may not be optimal, whereas in this latter case all of the generated configurations need to be evaluated to find the one best suiting the configuration requirements. This evaluation is resource extensive and may not even be possible for complex configurations.